16   Technical Notes

16.1   Minting Alternative Currency

Within the simulator, alternative currency can be minted (i.e. coins are created) at various different times:

  • The Controller may have an Initial Holding of alternative currency. That is, one that is in existence from the very start of a Trial.
  • Market Makers may be given an Initial Holding of alternative currency.
  • Initial Users (i.e. agents that are Active Users from the start) may have an Initial Holding of alternative currency.
  • Token Holding Users exchange their tokens for alternative coins freshly minted at the time of the exchange.
  • When an Individual Potential User becomes an Active User they may receive a gift of freshly minted alternative currency.
  • Active Users may purchase freshly minted coins from the Controller.
  • Operators may be paid for supporting transactions using freshly minted alternative currency coins.

None of these mechanisms needs to be used, but of course at least one must be used or no alternative currency will be created.

Alternative currency can also be destroyed. The only method by which this can happen in the simulator is this:

  • The Controller buys back alternative currency and destroys it.

16.2   Buzz Calculations

16.2.1   Buzz Generation

This table defines some variable names for the formulae below:

 
Speculators &
Customers
Merchants &
Operators
Journalists

Promoters

+ve Transient Message Rate \(r_{1,1}\) \(r_{1,2}\) \(r_{1,3}\) \(r_{1,4}\)
+ve Enduring Message Rate \(r_{2,1}\) \(r_{2,2}\) \(r_{2,3}\) \(r_{2,4}\)
+ve Enduring Reading Rate \(r_{3,1}\) \(r_{3,2}\) \(r_{3,3}\) \(r_{3,4}\)
-ve Transient Message Rate \(r_{4,1}\) \(r_{4,2}\) \(r_{4,3}\) \(r_{4,4}\)
-ve Enduring Message Rate \(r_{5,1}\) \(r_{5,2}\) \(r_{5,3}\) \(r_{5,4}\)
-ve Enduring Reading Rate \(r_{6,1}\) \(r_{6,2}\) \(r_{6,3}\) \(r_{6,4}\)

These are first consolidated into two variables for use in agent decision-making: Positive Current Buzz and Negative Current Buzz. In these formulae, \(P\) is the Positive Current Buzz, \(N\) is the Negative Current Buzz, \(h\) is total holdings of the alternative currency expressed in the fiat currency at the start of the day, and the other variables are rates from the table above:

\[\begin{split}&P = {((r_{1,1} + r_{1,2} + r_{1,3} + r_{1,4}) + (r_{2,1}r_{3,1} + r_{2,2}r_{3,2} + r_{2,3}r_{3,3} + r_{2,4}r_{3,4})) \over 365} {h \over 100,000} \\ &N = {((r_{4,1} + r_{4,2} + r_{4,3} + r_{4,4}) + (r_{5,1}r_{6,1} + r_{5,2}r_{6,2} + r_{5,3}r_{6,3} + r_{5,4}r_{6,4})) \over 365} {h \over 100,000}\end{split}\]

To these are added the messages generated by the Controller (transient and enduring). These totals may also be modified during a simulated day by newsworthy events.

16.2.2   Buzz Accumulation

The enduring messages are also important because they feed into two accumulated stocks of messages that depreciate over time: Positive Accumulated Buzz and Negative Accumulated Buzz. These are calculated at the end of each day. The daily depreciation rate, \(d\), is calculated from the half life, \(L\), in days. \(P\!A_t\) is the Positive Accumulated Buzz at the end of day \(t\), \(N\!A_t\) is the Negative Accumulated Buzz at the end of the day, and \(m_p\) and \(m_n\) are the product of positive and negative multipliers (if any) from the day’s newsworthy events:

\[\begin{split}&d = \bigg({1 \over 2}\bigg)^{L} \\ &P\!A_{t+1} = P\!A_{t} d + {(r_{2,1} + r_{2,2} + r_{2,3} + r_{2,4})m_p \over 365} {h \over 100,000} \\ &N\!A_{t+1} = N\!A_{t} d + {(r_{5,1} + r_{5,2} + r_{5,3} + r_{5,4})m_n \over 365} {h \over 100,000}\end{split}\]

The initial values of Accumulated Buzz, \(P\!A_0\) and \(N\!A_0\), are given by the settings Initial Positive Accumulated Buzz and Initial Negative Accumulated Buzz.

16.2.3   Newsworthy Events

Newsworthy Events during a day have an immediate effect on Positive Current Buzz and Negative Current Buzz, and also an effect at the end of the day when the Accumlated Buzz figures are updated.

The immediate effect on Current Buzz values is calculated by multiplying the Current Buzz by the appropriate multiplier for the event. The multipliers used for the Accumulated Buzz numbers consolidate the effects of any newsworthy events during the day. If there are no events then the multipliers are 1. If there are some events then the multipliers are the products of the multipliers from all the events.

16.3   Currency Valuation History

16.3.1   Hierarchy Of Valuation Sources

The current value and history of the alternative currency’s value is important for decisions in Trials and a key metric for understanding results. The source of the numbers for the history depends on what information is available at each time. The sources, in descending priority order, are as follows:

  • First Exchange: If the first Exchange is a Continuous Order Driven Exchange, the value will be the price of the alternative currency expressed in the fiat currency of the latest completed trade, unless that was more than 30 simulated minutes earlier. After this time the value used is the geometric mean of the buying and selling prices of the most competitive orders on the exchange, expressed in the fiat currency. If the first exchange is a Market Maker, the value used will be the geometric mean of the Bid and Ask prices.
  • Minted Sale Price: If there is no better source of prices and the Controller of the alternative currency offers freshly minted coins at a price in the fiat currency then this is the value to use.
  • Control Catalogue Pricing Rate: If there is no better source of prices and there is a Control Catalogue in operation then the rate used to set alternative currency prices for goods in the Control Catalogue is used.
  • Token Sale Price: If there is no better source of prices and tokens were sold then the price of those tokens, in fiat currency, is the value given to the alternative currency. This means that the price will be unchanging until a better source of prices appears.
  • Initial Exchange Rate: This is a parameter set for the alternative currency as the last resort — typically only needed initially and even then only in some situations. See 9.1   Basic Information for settings.

16.3.2   Valuation Histories

The above hierarchy of sources is used for determining the:

  • Alternative Currency Current Value, which shows the current valuation
  • Alternative Currency Daily Value History, which shows the valuation at the end of each day (midnight)
  • Alternative Currency Full Value History, which lists every change to the value of the alternative currency, with its exact time.

16.4   Distributions Of Wealth

Many economic quantities are unequally distributed. The simulator needs to distribute quantities unequally in a number of situations, such as:

  • Distribution of cash holdings of Initial Users.
  • The cash holdings of additional Users.
  • Average number of purchases per day of Users.
  • Prices of goods offered for sale.

In all cases, the simulator does this by generating pseudorandom numbers according to the Log-normal distribution (shifted by a non-negative constant) with parameters (\(\mu\) and \(\sigma\)) worked out from settings given. When you enter setting values the distribution parameters are worked out and feedback is shown in the form of further key numbers from the distribution:

  • The mode.
  • The P01, P10, P90, and P99 values.

The settings to give are the lowest possible value (\(L\)), the median (\(d\)), and the mean (\(n\)). This may not seem like the most intuitive choice but economic statistics, such as those from the UK’s Office of National Statistics, often give the values for the median and mean, and approximate P10 and P90 values can be read off their charts for comfirmation. The lowest possible value can be set to zero.

The parameters and mode are calculated as follows:

\[\begin{split}&\mu = \ln[d-L]\\ &\sigma = \sqrt{2(\ln[n-L]-\mu)}\\ &mode = e^{\mu - \sigma^2} + L\end{split}\]

Note that, in this documentation, square brackets are used to indicate the inputs to functions to avoid ambiguity.

16.5   Calibration Functions

This section explains the calibration function types, how their parameters are calculated from given settings, and their inverses used to provide feedback to users.

16.5.1   Ranging Over 0 To 1

The simpler calibration function types are the ones that map decision factor values to numbers between 0 and 1. In these formulae for the calibration function types the variables after the semicolon are parameters that define a function mapping an input, \(x\), to an output, which is the required multiplier.

\[\begin{split}&\text{half-asc-1}[x;a,b] \equiv 1 - {1 \over a(x-b)+1}, x \geq 0 \\ &\text{half-desc-1}[x;a,b] \equiv {1 \over a(x-b) + 1}, x \geq 0 \\ &\text{full-asc-1}[x;k,x_0] \equiv {1 \over 1 + e^{-k(x-x_0)}} \\ &\text{full-desc-1}[x;k,x_0] \equiv {1 \over 1 + e^{k(x-x_0)}}\end{split}\]

With \(\text{half-asc-1}\) and \(\text{half-desc-1}\), you are asked to set a value for the factor, \(f_{0.5}\), that would reduce the probability of opting in by a half, and a value for the multiplier, \(m_0\), when the factor is zero. For the \(\text{half-asc-1}\) function \(m_0\) must be less than 0.5 and \(a\) and \(b\), are calculated as follows:

\[a = {2m_0-1 \over f_{0.5}(m_0-1)}, \ \ \ b = {f_{0.5} m_0 \over 2m_0-1}\]

For the \(\text{half-desc-1}\) function type \(m_0\) must be greater than 0.5 and \(a\) and \(b\), are calculated as follows:

\[a = {2m_0-1 \over f_{0.5}m_0}, \ \ \ b = {f_{0.5} (m_0-1) \over 2m_0-1}\]

With the \(\text{full-asc-1}\) and \(\text{full-desc-1}\) function types you are asked for the value of the factor, \(x\), that would give a multiplier of 0.5, \(f_{0.5}\), and a multiplier value for when \(x=0\), (\(m_0\) in the following formulae). From these two the system calculates the values of the two parameters of the functions, \(k\) and \(x_0\), using the same pair of equations in each case.

\[x_0 = f_{0.5}, \ \ \ k = {1 \over f_{0.5}} \ln\left[{1 \over m_0} -1 \right]\]

When you have entered settings to specify the parameters of these functions the system shows feedback in the form of further statistics from the distribution. These will be the values of the factor that give multipliers of 0.01, 0.1, 0.5, 0.9, and 0.99, if there are any such values. The inverse functions are as follows:

\[\begin{split}\text{half-asc-1}^{-1}[m;a,b] \equiv {m \over a(1-m)} + b,\ \ \text{provided} \ x \geq 0 \\ \text{half-desc-1}^{-1}[m;a,b] \equiv {1 - m \over am} + b,\ \ \text{provided} \ x \geq 0 \\ \text{full-asc-1}^{-1}[m;k,x_0] \equiv x_0 - {1 \over k} \ln\left[{1-m \over m} \right] \\ \text{full-desc-1}^{-1}[m;k,x_0] \equiv x_0 + {1 \over k} \ln\left[{1-m \over m} \right]\end{split}\]

16.5.2   Ranging Over A Chosen Interval

Similar calibration function types are available to map to an interval of your choice, rather than just 0 to 1.

\[\begin{split}&\text{half-asc}[x;a,b,c] \equiv c - {b \over ax+1}, x \geq 0 \\ &\text{half-desc}[x;a,b,c] \equiv {b \over ax+1} + c, x \geq 0 \\ &\text{full-asc}[x;m_t,m_b,k,x_0] \equiv {m_t - m_b \over 1 + e^{-k(x-x_0)}} + m_b \\ &\text{full-desc}[x;m_t,m_b,k,x_0] \equiv {m_t - m_b \over 1 + e^{k(x-x_0)}} + m_b\end{split}\]

For \(\text{half-asc}\) and \(\text{half-desc}\) you have to specify the highest (\(m_t\)) and lowest (\(m_b\)) possible multiple and the value of the factor that gives a multiple of 1 (\(f_1\), having no effect on the average delay).

For the \(\text{half-asc}\) function, the parameters are calculated as follows:

\[a = {1-m_b \over x_1(m_t-1)}, \ \ \ b = m_t - m_b, \ \ \ c = m_t\]

For the \(\text{half-desc}\) function, the parameters are calculated as follows:

\[a = {m_t - 1 \over x_1(1-m_b)}, \ \ \ b = m_t - m_b, \ \ \ c = m_b\]

For the \(\text{full-asc}\) you have to specify the highest possible multiple, \(m_t\), the lowest possible multiple, \(m_b\), the value of the factor that gives a multiple of 1, \(f_1\), and the value of the factor that gives a multiple of 2, \(f_2\). The parameters of the function are then calculated as follows:

\[x_0 = {f_1L_2 - f_2L_1 \over L_2-L_1}, \ \ \ k = {L_1 \over x_0 - f_1}\]

where,

\[L_1 = \ln\left[{m_t - 1 \over 1 - m_b}\right], \ \ \ L_2 = \ln\left[{m_t - 2 \over 2 - m_b} \right]\]

For the \(\text{full-desc}\) you have to specify the highest possible multiple, \(m_t\), the lowest possible multiple, \(m_b\), the value of the factor that gives a multiple of 1, \(f_1\), and the value of the factor that gives a multiple of 0.5, \(f_{0.5}\). The parameters of the function are then calculated as follows:

\[x_0 = {f_1L_2 - f_{0.5}L_1 \over L_2-L_1}, \ \ \ k = {L_1 \over f_1 - x_0}\]

where,

\[L_1 = \ln\left[{m_t - 1 \over 1 - m_b}\right], \ \ \ L_2 = \ln\left[{2m_t - 1 \over 1 - 2m_b} \right]\]

When you have entered settings to specify the parameters of these functions the system shows feedback in the form of further statistics from the distribution. These will be the values of the factor that give multipliers of 0.01, 0.1, 0.5, 0.9, and 0.99, if there are any such values. The inverse functions are as follows:

\[\begin{split}&\text{half-asc}^{-1}[m;a,b,c] \equiv {1 \over a} \left({b \over c-m} -1 \right),\ \ \text{provided} \ x \geq 0 \\ &\text{half-desc}^{-1}[m;a,b,c] \equiv {1 \over a} \left({b \over m-c} -1 \right),\ \ \text{provided} \ x \geq 0 \\ &\text{full-asc}^{-1}[m;k,x_0,m_t,m_b] \equiv x_0 - {1 \over k} \ln\left[{m_t - m_b \over m-m_b} \right] \\ &\text{full-desc}^{-1}[m;k,x_0,m_t,m_b] \equiv x_0 + {1 \over k} \ln\left[{m_t-m_b \over m - m_b} \right]\end{split}\]

16.6   Random Delays

The two most common distributions used in the simulator for generating random time delays are the uniform and exponential.

16.6.1   Uniformly Distributed Delays

Uniformly distributed delays ensure that the event happens at a random time within a specified interval. It means we can guarantee that the event happens at some time within the interval but all delays within the interval are equally likely.

Specifying the distribution requires just the maximum time delay.

16.6.2   Exponentially Distributed Delays

Exponentially distributed delays could, in theory, be any length, but they have a predictable long term average length. This is the result of a Poisson point process and is a common choice for modelling relatively rare events that happen randomly. The usual parameterization of the exponential distribution uses lambda, the rate of occurrence, but it seems easier to think in terms of the average delay, which is its reciprocal. Using \(d\) as the average delay, the cumulative distribution function is:

\[P[x<X] \equiv 1 - e^{-X \over d}\]

The inverse distribution function, used for generating random delays, is:

\[X \equiv - {d \ln[1-p]}\]

The distribution is memoryless, which means that an event occurring does not affect the expected time until the next event. (This may be unrealistic in some situations.)

16.6.2.1   Deciding Average Delays

Agents sometimes need to decide on delays based on a number of different factors. This is done by using functions to determine the average delay then generating delays according to the exponential distribution using the average delay as usual.

The starting point is an default average delay. The factors considered will each then multiply that delay by a value that may be more than or less than 1, and so may increase or decrease the delay respectively.

The calibration function types used are \(\text{half-asc}\), \(\text{half-desc}\), \(\text{full-asc}\), and \(\text{full-desc}\).

16.7   Economic Predictions

Users and Exchanges need to consider the economics underlying their decisions. Key decision factors for this purpose are their best estimates for future volumes and values of activity and resulting gains. These predictions reflect:

  • personal extrapolation: i.e. their direct personal experiences
  • market extrapolation: i.e. more ‘theoretical’ calculations based on overall market numbers and crude assumptions
  • theoretical extrapolation: i.e. even cruder calculations based on simple parameters of the Trial.

The importance of direct personal experience rises in the calculation as more of that personal experience becomes available. Also, the agent’s tendency to react to the most recent information is reflected in the predictions by using a personal recency factor.

All predictions described below are based on calculating an exponentially weighted moving average of the days since the User took up the relevant role, plus up to an additional 21 days of daily (i.e. midnight to midnight) numbers, or as many as exist in the early days of the simulation. Those days do not include the current day. Each day in the sequence contains either:

  • actual personal data based on the agent’s transactions during the relevant day, and only used when the agent is an Active User or providing exchange services for the alternative currency for the entire day; or
  • market estimated personal data based on the whole market’s transactions during the day and some crude assumptions and calculations; or
  • theoretical estimated personal data based on parameter settings for the Trial and very crude assumptions and calculations.

The best quality available number is used on each day. This means that individual agents maintain their personal moving averages, with their own recency weightings, and when starting in a new role can create a new moving average by looking back at market and theoretical numbers shared by all agents.

16.7.1   Recency Weighted Moving Averages

Recency weighted moving averages are calculated by using the exponentially weighted moving average method with a discount factor \(d\).

The average is calculated by keeping two running totals. One is for the sum of weights and the other for the sum of weighted values. The average is the sum of weighted values divided by the sum of weights. The following formulae are for a sequence of values: \(a_1, a_2, a_3, ...\), and the goal is to work out the exponentially weighted moving average for the sequence up to and including \(a_k\).

For \(k = 1\),

\[\begin{split}&V_1 = a_1 \\ &W_1 = 1 \\ &\text{EWMA}_k = {V_1 \over W_1}\end{split}\]

For \(k > 1\),

\[\begin{split}&V_k = d V_{k-1} + a_k \\ &W_k = d W_{k-1} + 1 \\ &\text{EWMA}_k = {V_k \over W_k}\end{split}\]

\(d\) is calculated from a recency factor set, \(r\):

\[d = 1 - r\]

This factor represents the proportion of the weight given to the latest value in the sequence, in the very long term. (When the sequence has only one number in it this has all the weight, but as more numbers are added to the sequence the proportion of the weight falls, gradually approaching \(r\).)

Individual Users have different discount factors, giving some a more long term view than others.

16.7.2   Transaction Volumes

Daily transaction volumes are defined as follows:

  • Customer Purchases In Alternative Currency (Volume): i.e. the number of purchases made by the Customer in Alternative Currency.
    • Actual: The number of alternative currency amounts paid to purchase goods during the day by the Customer.
    • Market Estimate: The sum of the Actuals for all Customers divided by the number of Customers at the end of the day. Not defined if the number of Customers at the end of the day is zero.
    • Theoretical Estimate: Half the Customer’s purchases are assumed to be in alternative currency.
\[= 0.5 (F_l N_l + F_p N_p)\]
where:
\(F_l\) is the Average Fraction Of Lone Goods Purchased daily by the Customer
\(N_l\) is the Number Of Lone Goods set for the simulation
\(F_p\) is the Average Fraction Of Paired Goods Purchased daily by the Customer
\(N_p\) is the Number Of Paired Goods set for the simulation
  • Customer Purchases In Fiat Currency (Volume): i.e. the number of purchases made by the Customer in fiat currency.
    • Actual: The number of fiat currency amounts paid to purchase goods during the day by the Customer.
    • Market Estimate: The sum of the Actuals for all Customers divided by the number of Customers at the end of the day. Not defined if the number of Customers at the end of the day is zero.
    • Theoretical Estimate: Half the Customer’s purchases are assumed to be in fiat currency.
\[= 0.5 (F_l N_l + F_p N_p)\]
where:
\(F_l\) is the Average Fraction Of Lone Goods Purchased daily by the Customer
\(N_l\) is the Number Of Lone Goods set for the simulation
\(F_p\) is the Average Fraction Of Paired Goods Purchased daily by the Customer
\(N_p\) is the Number Of Paired Goods set for the simulation
  • Merchant Sales In Alternative Currency (Volume):
    • Actual: The number of alterative currency amounts received for goods sold during the day by the Merchant.
    • Market Estimate: The sum of the Actuals for all Merchants divided by the number of Merchants at the end of the day. Not defined if the number of Merchants at the end of the day is zero.
    • Theoretical Estimate: Since there were no Merchants at the end of the day it is assumed that, if the Merchant has just opted in, then it will get all sales. Also, half the Merchant’s sales are assumed to be in alternative currency.
\[= 0.5 C_n \bigg( {(L_l + H_l) \over 2} N_l + {(L_p + H_p) \over 2} N_p \bigg)\]
\(L_l\) is the Lowest Average Fraction Of Lone Goods Purchased by Customers
\(H_l\) is the Highest Average Fraction Of Lone Goods Purchased by Customers
\(L_p\) is the Lowest Average Fraction Of Paired Goods Purchased by Customers
\(H_p\) is the Highest Average Fraction Of Paired Goods Purchased by Customers
\(C_n\) is the number of Customers
  • Merchant Sales In Fiat Currency (Volume):
    • Actual: The number of fiat currency amounts received for goods sold during the day by the Merchant.
    • Market Estimate: The sum of the Actuals for all Merchants divided by the number of Merchants at the end of the day. Not defined if the number of Merchants at the end of the day is zero.
    • Theoretical Estimate: Since there were no Merchants at the end of the day it is assumed that, if the Merchant has just opted in, then it will get all sales. Also, half the Merchant’s sales are assumed to be in alternative currency.
\[= 0.5 C_n \bigg( {(L_l + H_l) \over 2} N_l + {(L_p + H_p) \over 2} N_p \bigg)\]
\(L_l\) is the Lowest Average Fraction Of Lone Goods Purchased by Customers
\(H_l\) is the Highest Average Fraction Of Lone Goods Purchased by Customers
\(L_p\) is the Lowest Average Fraction Of Paired Goods Purchased by Customers
\(H_p\) is the Highest Average Fraction Of Paired Goods Purchased by Customers
\(C_n\) is the number of Customers
  • Merchant Resupply Purchases (Volume):
    • Actual: The number of fiat currency payments made to resupply goods sold during the day by the Merchant. This will be the sum of the number of sales made in alternative currency and the number of sales made in the fiat currency since every sale is accompanied by an immediate resupply purchase.
    • Market Estimate: The sum of the Actuals for all Merchants divided by the number of Merchants at the end of the day. Not defined if the number of Merchants at the end of the day is zero.
    • Theoretical Estimate: Since there were no Merchants at the end of the day it is assumed that, if the Merchant has just opted in, then it will get all sales.
\[= C_n \bigg( {(L_l + H_l) \over 2} N_l + {(L_p + H_p) \over 2} N_p \bigg)\]
\(L_l\) is the Lowest Average Fraction Of Lone Goods Purchased by Customers
\(H_l\) is the Highest Average Fraction Of Lone Goods Purchased by Customers
\(L_p\) is the Lowest Average Fraction Of Paired Goods Purchased by Customers
\(H_p\) is the Highest Average Fraction Of Paired Goods Purchased by Customers
\(C_n\) is the number of Customers
  • Operator Transactions (Volume):
    • Actual: The number of transactions handled by the Operator during the day.
    • Market Estimate: The sum of the Actuals for all Operators divided by the number of Operators at the end of the day.
    • Theoretical Estimate: Not required as there will always be at least one Operator if Operators are needed at all.
  • Exchange Transactions (Volume):
    • Actual: The number of transactions fulfilled by a Market Maker or number of arriving orders partly or fully satisfied during the day by a Continuous Order Driven Exchange.
    • Market Estimate: The sum of the Actuals for all Exchanges, divided by the number of Exchanges at the end of the day. Not defined if the number of Exchanges at the end of the day is zero.
    • Theoretical Estimate: The sum of the Actuals for all Exchanges, since it is assumed that a new exchange would get all the transactions.

16.7.3   Transaction Values

Daily transaction values are defined as follows:

  • Speculation Level (Value):
    • Actual: The alternative currency balance of the agent at the end of the day (midnight).
    • Market Estimate: The sum of the Actuals for all agents, excluding exchanges, divided by the the number of such agents. This is not defined if the number of relevant agents at the end of the day is zero.
    • Theoretical Estimate: Zero.
  • Customer Purchases In Alternative Currency (Value):
    • Actual: The sum of the alternative currency amounts paid to purchase goods during the day by the Customer. This will include any transaction fees to be paid by the Customer.
    • Market Estimate: The sum of the Actuals for all Customers divided by the number of Customers at the end of the day. This is not defined if the number of Customers at the end of the day is zero.
    • Theoretical Estimate: Assuming that half of the purchases are in alternative currency.
\[= 0.5 {P_m \over r} (F_l N_l + F_p N_p)\]
where:
\(P_m\) is the Mean Price Of A Good set
\(F_l\) is the Average Fraction Of Lone Goods Purchased daily by the Customer
\(N_l\) is the Number Of Lone Goods set for the simulation
\(F_p\) is the Average Fraction Of Paired Goods Purchased daily by the Customer
\(N_p\) is the Number Of Paired Goods set for the simulation
\(r\) is the value of alternative currency in fiat currency at the end of the day
  • Customer Purchases In Fiat Currency (Value):
    • Actual: The sum of the fiat currency amounts paid to purchase goods during the day by the Customer. This will include any transaction fees to be paid by the Customer.
    • Market Estimate: The sum of the Actuals for all Customers divided by the number of Customers at the end of the day. This is not defined if the number of Customers at the end of the day is zero.
    • Theoretical Estimate: Assuming that half of the purchases are in alternative currency.
\[= 0.5 P_m (F_l N_l + F_p N_p)\]
where:
\(P_m\) is the Mean Price Of A Good set
\(F_l\) is the Average Fraction Of Lone Goods Purchased daily by the Customer
\(N_l\) is the Number Of Lone Goods set for the simulation
\(F_p\) is the Average Fraction Of Paired Goods Purchased daily by the Customer
\(N_p\) is the Number Of Paired Goods set for the simulation
  • Merchant Sales In Alternative Currency (Value):
    • Actual: The sum of the alternative currency amounts received for goods sold during the day by the Merchant. This will be after deducting any transaction fees.
    • Market Estimate: The sum of the Actuals for all Merchants, divided by the number of Merchants at the end of the day. This is not defined if the number of Merchants at the end of the day is zero.
    • Theoretical Estimate: Since there were no Merchants at the end of the day it is assumed that, if the Merchant has just opted in, then it will get all sales. Half the sales are assumed to be in alternative currency.
\[= 0.5 {P_m C_n \over r} \bigg( {(L_l + H_l) \over 2} N_l + {(L_p + H_p) \over 2} N_p \bigg)\]
\(P_m\) is the Mean Price Of A Good set
\(L_l\) is the Lowest Average Fraction Of Lone Goods Purchased by Customers
\(H_l\) is the Highest Average Fraction Of Lone Goods Purchased by Customers
\(L_p\) is the Lowest Average Fraction Of Paired Goods Purchased by Customers
\(H_p\) is the Highest Average Fraction Of Paired Goods Purchased by Customers
\(C_n\) is the number of Customers
\(r\) is the value of alternative currency in fiat currency at the end of the day
  • Merchant Sales In Fiat Currency (Value):
    • Actual: The sum of the fiat currency amounts received for goods sold during the day by the Merchant. This will be after deducting any transaction fees.
    • Market Estimate: The sum of the Actuals for all Merchants, divided by the number of Merchants at the end of the day. This is not defined if the number of Merchants at the end of the day is zero.
    • Theoretical Estimate: Since there were no Merchants at the end of the day it is assumed that, if the Merchant has just opted in, then it will get all sales. Half the sales are assumed to be in fiat currency.
\[= 0.5 P_m C_n \bigg( {(L_l + H_l) \over 2} N_l + {(L_p + H_p) \over 2} N_p \bigg)\]
\(P_m\) is the Mean Price Of A Good set
\(L_l\) is the Lowest Average Fraction Of Lone Goods Purchased by Customers
\(H_l\) is the Highest Average Fraction Of Lone Goods Purchased by Customers
\(L_p\) is the Lowest Average Fraction Of Paired Goods Purchased by Customers
\(H_p\) is the Highest Average Fraction Of Paired Goods Purchased by Customers
\(C_n\) is the number of Customers
  • Merchant Resupply Purchases (Value):
    • Actual: The fiat currency paid to resupply goods sold during the day by the Merchant.
    • Market Estimate: The sum of the Actuals for all Merchants divided by the number of Merchants at the end of the day. Not defined if the number of Merchants at the end of the day is zero.
    • Theoretical Estimate: Since there were no Merchants at the end of the day it is assumed that, if the Merchant has just opted in, then it will get all sales.
\[= P_m m_c C_n \bigg( {(L_l + H_l) \over 2} N_l + {(L_p + H_p) \over 2} N_p \bigg)\]
\(P_m\) is the Mean Price Of A Good set
\(m_c\) is the Cost Multiple For Goods
\(L_l\) is the Lowest Average Fraction Of Lone Goods Purchased by Customers
\(H_l\) is the Highest Average Fraction Of Lone Goods Purchased by Customers
\(L_p\) is the Lowest Average Fraction Of Paired Goods Purchased by Customers
\(H_p\) is the Highest Average Fraction Of Paired Goods Purchased by Customers
\(C_n\) is the number of Customers
  • Operator Transaction Fees (Value):
    • Actual: The sum of the transaction fees earned by the Operator during the day. These are always in alternative currency.
    • Market Estimate: The sum of the Actuals for all Operators, divided by the number of Operators at the end of the day. This is not defined if the number of Operators at the end of the day is zero.
    • Theoretical Estimate: Not required as there will always be at least one Operator.
  • Operator Expenses (Value):
    • Actual: The sum of the transaction costs and daily fixed costs for the Operator during the day. These are in fiat currency.
    • Market Estimate:* The sum of the Actuals for all Operators, divided by the number of Operators at the end of the day. This is not defined if the number of Operators at the end of the day is zero.
    • Theoretical Estimate:* This considers only the transactions needed for purchases of goods.
\[= c_d + c_v C_n \bigg( {(L_l + H_l) \over 2} N_l + {(L_p + H_p) \over 2} N_p \bigg)\]
\(c_v\) is the variable cost i.e. cost per transaction borne by the Operator
\(c_d\) is the daily fixed cost of the Operator
\(L_l\) is the Lowest Average Fraction Of Lone Goods Purchased by Customers
\(H_l\) is the Highest Average Fraction Of Lone Goods Purchased by Customers
\(L_p\) is the Lowest Average Fraction Of Paired Goods Purchased by Customers
\(H_p\) is the Highest Average Fraction Of Paired Goods Purchased by Customers
\(C_n\) is the number of Customers
  • Exchange Transactions (Value):
    • Actual: The alternative currency value of transactions fulfilled by a Market Maker or arriving orders partly or fully satisfied during the day by a Continuous Order Driven Exchange.
    • Market Estimate: The sum of the Actuals for all Exchanges, divided by the number of Exchanges.
    • Theoretical Estimate: The sum of the Actuals for all Exchanges, since it is assumed that a new Exchange would get all the transactions.

16.7.4   Transaction Gains

In the course of exchanging currency (with the Controller or Exchanges), buying and selling goods, and supporting transactions, agents make gains (losses are negative gains) from:

  • speculation
  • buying
  • selling
  • operating
  • exchanges as a Market Maker.

The actual gains on individual transactions are calculated as given in the following two tables. Within these the variables are:

  • \(F\) and \(F'\) are the agent’s stock of fiat currency before and after the transaction.
  • \(S\) and \(S'\) are the agent’s stock of goods, valued in fiat currency, before and after the transaction.
  • \(A\) and \(A'\) are the agent’s stock of alternative currency, expressed in alternative currency, before and after the transaction.
  • \(r\) is the rate of exchange implied by the transaction.
  • \(V_A\) and \(V'_A\) are the fiat currency values of the stock of alternative currency before and after the transaction.
  • \(a\) is the alternative currency initially paid/finally received: (1) by the Customer when goods are bought, (2) by the User when currency exchange is made.
  • \(f\) is the fiat currency initially paid/finally received: (1) by the Customer when goods are bought, (2) by the User when currency exchange is made.
  • \(p\) is the underlying price of the good in fiat currency.
  • \(m_v\) is the valuation multiple for a substitute i.e. showing how much more valuable to the Customer a substitute is compared to its Paired Good.
  • \(m_c\) is the cost multiple for a good. Multiplying the underlying price by the cost multiple gives the cost of the good for profit calculation purposes.
  • \(t_a\) is the transaction fee on alternative currency movement excluding any fee paid by the other party. (This varies depending on various factors, see 16.8   Transaction Fees.) In the case of an Operator supporting a transaction in the alternative currency, the \(t_a\) represents either the whole transaction fee paid by the Controller and Users (if paid only to the winner and the Operator is that winner), zero (if paid only the winner and the Operator is not the winner), or the transaction fee paid divided by the lesser of the number of Operators and the Maximum Operators Per Transaction (see 9.2   System Support).
  • \(t_f\) is the transaction fee on fiat currency movement excluding any fee paid by the other party. (This varies depending on various factors, see 16.8   Transaction Fees.)
  Buy good with fiat Buy good with alt. Buy subst. with alt. Sell for fiat (and restock) Sell for alt. (and restock)
\[F'\]
\[F - f\]
\[F\]
\[F\]
\[F + f - p m_c - t_f - t_{f2}\]
\[F - p m_c - t_{f2}\]
\[S'\]
\[S + p\]
\[S + p\]
\[S + p m_v\]
\[S\]
\[S\]
\[A'\]
\[A\]
\[A - a\]
\[A - a\]
\[A\]
\[A + a - t_a\]
\[r\]
\[\text{None}\]
\[{p \over a}\]
\[{p \over a}\]
\[\text{None}\]
\[{p \over a}\]
\[V'_A\]
\[V_A\]
\[A' r\]
\[A' r\]
\[V_A\]
\[A' r\]
Speculation gain
\[0\]
\[p+V'_A-V_A+t_ar\]
\[pm_v+V'_A-V_A+t_ar\]
\[0\]
\[-p+V'_A-V_A+t_ar\]
Buying gain
\[- t_f\]
\[- t_a r\]
\[p (1-m_v) - t_a r\]
\[0\]
\[0\]
Selling gain
\[0\]
\[0\]
\[p - p m_c\]
\[f - p m_c - t_f - t_{f2}\]
\[ar - p m_c - t_a r - t_{f2}\]
Operating gain
\[0\]
\[0\]
\[0\]
\[0\]
\[0\]
Market Making gain
\[0\]
\[0\]
\[0\]
\[0\]
\[0\]

In the Sell for fiat (and restock) case, the sale is accompanied by the Merchant buying replacement stock using fiat currency and this also attracts a second transaction fee, \(t_{f2}\). In the Sell for alt. (and restock) case the Merchant again replaces the stock, paying in fiat currency and attracting the second transaction fee.

  Support transaction User buys fiat User buys alt. MM sells fiat MM sells alt.
\[F'\]
\[F\]
\[F + f\]
\[F - f\]
\[F - f - t_f\]
\[F + f - t_f\]
\[S'\]
\[S\]
\[S\]
\[S\]
\[S\]
\[S\]
\[A'\]
\[A + t_a\]
\[A - a\]
\[A + a\]
\[A + a - t_a\]
\[A - a - t_a\]
\[r\]
\[{c_v \over t_a}\]
\[{f \over a}\]
\[{f \over a}\]
\[{f \over a}\]
\[{f \over a}\]
\[V'_A\]
\[V_A\]
\[A' r\]
\[A' r\]
\[A' r\]
\[A' r\]
Speculation gain
\[0\]
\[f+V'_A-V_A+t_f+t_a r\]
\[-f+V'_A-V_A+t_f+t_a r\]
\[0\]
\[0\]
Buying gain
\[0\]
\[0\]
\[0\]
\[0\]
\[0\]
Selling gain
\[0\]
\[0\]
\[0\]
\[0\]
\[0\]
Exchange gain
\[0\]
\[-t_f - t_a r\]
\[-t_f - t_a r\]
\[0\]
\[0\]
Operating gain
\[t_a r\]
\[0\]
\[0\]
\[0\]
\[0\]
Market Making gain
\[0\]
\[0\]
\[0\]
\[-f+t_f+V'_A-V_A\]
\[f-t_f+V'_A-V_A\]

The gains for a whole day (midnight to midnight) are defined as follows:

  • Speculation Gain:
    • Actual: The sum of the speculation gains on transactions by the agent during the day.
    • Estimates: Not needed as all Active Users can make speculation gains.
  • Buying Gain:
    • Actual: The sum of the buying gains on transactions by the agent during the day.
    • Market Estimate: The sum of all buying gains on transactions by all agents during the day divided by the number of Customers at the end of the day. (No value if there are none.)
    • Theoretical Estimate: Zero.
  • Selling Gain:
    • Actual: The sum of the selling gains on transactions by the agent during the day.
    • Market Estimate: The sum of all selling gains on transactions by all agents during the day divided by the number of Merchants at the end of the day. (No value if there are none.)
    • Theoretical Estimate: Zero.
  • Exchange Gain:
    • Actual: The sum of the exchange gains (really just transaction costs on exchanges) on transactions by the agent during the day.
    • Estimates: Not needed as all Active Users can use exchanges.
  • Operating Gain:
    • Actual: The sum of the operating gains on transactions by the agent during the day, less the Operator’s daily fixed costs.
    • Market Estimate: The actual operating gains of all Operators during the day divided by the number of Operators at the end of the day. (No value if there are none.)
    • Theoretical Estimate: Not required as there will always be at least one Operator if Operators are required at all.
  • Market Making Gain:
    • Actual: The sum of the market making gains on transactions by the agent during the day.
    • Market Estimate: The total market making gains of all Market Makers during the day divided by the number of Market Makers at the end of the day. (No value if there are none.)
    • Theoretical Estimate: Zero.

16.8   Transaction Fees

All transfers of currency involve transaction fees (though they can be set to zero). The types where the alternative currency is involved are:

\(T_{cf}\) Controller Paid Fixed Transaction Fee (Minted)
\(T_{cp}\) Controller Paid Percentage Transaction Fee (Minted)
\(T_{af}\) User Paid Fixed Transaction Fee (in alternative currency)
\(T_{ap}\) User Paid Percentage Transaction Fee (in alternative currency)

The types where the fiat currency is involved are:

\(T_{ff}\) FC User Paid Fixed Transaction Fee (in fiat)
\(T_{fp}\) FC User Paid Percentage Transaction Fee (in fiat)

16.8.1   Purchase/Sale Of Goods

Purchase/sale of goods involve just one transfer of currency and involve two possible arrangements.

  • Merchant Pays Fees: Customer sends the price (\(P\)) in appropriate currency and the Merchant receives that less the user-paid transaction fees.
  Pay in fiat Pay in alt.
Customer pays (\(C_p\))
\[P \text{ fiat}\]
\[P \text{ alt.}\]
Merchant receives
\[P(1 - 0.01 T_{fp}) - T_{ff} \text{ fiat}\]
\[P(1 - 0.01 T_{ap}) - T_{af} \text{ alt.}\]
Controller pays
\[0\]
\[T_{cf} + 0.01 C_p T_{cp} \text{ alt.}\]
Operators receive
\[0\]
\[T_{af} + T_{cf} + 0.01 C_p (T_{ap} + T_{cp}) \text{ alt.}\]
  • Customer Pays Fees: Customer sends the price plus the user-paid transaction fees so that the Merchant receives the price once the transaction fees have been deducted.
  Pay in fiat Pay in alt.
Customer pays (\(C_p\))
\[{P + T_{ff} \over 1 - 0.01 T_{fp}} \text{ fiat}\]
\[{P + T_{af} \over 1 - 0.01 T_{ap}} \text{ alt.}\]
Merchant receives
\[P \text{ fiat}\]
\[P \text{ alt.}\]
Controller pays
\[0\]
\[T_{cf} + 0.01 C_p T_{cp} \text{ alt.}\]
Operators receive
\[0\]
\[T_{af} + T_{cf} + 0.01 C_p (T_{ap} + T_{cp}) \text{ alt.}\]

16.8.2   Currency Exchange

For currency exchanges there are three possible arrangements:

  • Exchange Pays Fees: The person using the Exchange sends an amount of one currency and receives in return an amount that is simply converted at the advertised/order rate (\(r\)). The Exchange pays the fees.
  Buy alt. with fiat Sell alt. for fiat
User pays (\(U_p\))
\[F \text{ fiat}\]
\[A \text{ alt.}\]
Exchange receives
\[U_p(1 - 0.01 T_{fp}) - T_{ff} \text{ fiat}\]
\[U_p(1 - 0.01 T_{ap}) - T_{af} \text{ alt.}\]
Exchange pays (\(E_p\))
\[{{U_p \over r} + T_{af} \over 1 - 0.01 T_{ap}} \text{ alt.}\]
\[{U_p r + T_{ff} \over 1 - 0.01 T_{fp}} \text{ fiat}\]
User receives
\[{U_p \over r} \text{ fiat}\]
\[U_p r \text{ fiat}\]
Controller pays
\[T_{cf} + 0.01 E_p T_{cp} \text{ alt.}\]
\[T_{cf} + 0.01 U_p T_{cp} \text{ alt.}\]
Operators receive
\[T_{af} + T_{cf} + 0.01 E_p (T_{ap} + T_{cp}) \text{ alt.}\]
\[T_{af} + T_{cf} + 0.01 U_p(T_{ap} + T_{cp}) \text{ alt.}\]
  • User Pays Fees: The Exchange receives an amount and sends an amount based on converting it as the advertised exchange rate (\(r\)).
  Buy alt. with fiat Sell alt. for fiat
User pays (\(U_p\))
\[{F - T_{ff} \over 1 - 0.01 T_{fp}} \text{ fiat}\]
\[{A + T_{af} \over 1 - 0.01 T_{ap}} \text{ alt.}\]
Exchange receives (\(E_r\))
\[F \text{ fiat}\]
\[A \text{ alt.}\]
Exchange pays (\(E_p\))
\[{E_r \over r} \text{ alt.}\]
\[E_r r \text{ fiat}\]
User receives
\[E_p(1 - T_{ap}) - T_{af} \text{ alt.}\]
\[E_p(1 - T_{fp}) - T_{ff} \text{ fiat}\]
Controller pays
\[T_{cf} + 0.01 E_p T_{cp} \text{ alt.}\]
\[T_{cf} + 0.01 U_p T_{cp} \text{ alt.}\]
Operators receive
\[T_{af} + T_{cf} + 0.01 E_p(T_{ap} + T_{cp}) \text{ alt.}\]
\[T_{af} + T_{cf} + 0.01 U_p(T_{ap} + T_{cp}) \text{ alt.}\]
  • Initiators Pay Fees: The payers in each currency movement pay the fees.
  Buy alt. with fiat Sell alt. for fiat
User pays (\(U_p\))
\[{F - T_{ff} \over 1 - 0.01 T_{fp}} \text{ fiat}\]
\[{A + T_{af} \over 1 - 0.01 T_{ap}} \text{ alt.}\]
Exchange receives (\(E_r\))
\[F \text{ fiat}\]
\[A \text{ alt.}\]
Exchange pays (\(E_p\))
\[{{E_r \over r} - T_{af} \over 1 - 0.01 T_{ap}} \text{ alt.}\]
\[{E_r r + T_{ff} \over 1 - 0.01 T_{fp}} \text{ fiat}\]
User receives
\[{E_r \over r} \text{ alt.}\]
\[E_r r \text{ fiat}\]
Controller pays
\[T_{cf} + 0.01 E_p T_{cp} \text{ alt.}\]
\[T_{cf} + 0.01 U_p T_{cp} \text{ alt.}\]
Operators receive
\[T_{af} + T_{cf} + 0.01 E_p(T_{ap} + T_{cp}) \text{ alt.}\]
\[T_{af} + T_{cf} + 0.01 U_p(T_{ap} + T_{cp}) \text{ alt.}\]

16.9   Customer Purchasing Decisions

When they shop, Customers randomly select a number of Lone Goods to try to buy, a number of Paired Goods to try to buy, and a number of Exclusive Goods to try to buy according to their personal characteristics, and then randomly select goods to try to buy until they have attempted the intended numbers of purchases. For each purchase they must decide what exactly to buy, from whom, and with which payment mechanism.

The Customer identifies the best available:

  • fiat price of the good
  • alternative currency price of the good
  • alternative currency price of the good’s substitute.

Each of these may be paid for by using existing stocks of the relevant currency or by obtaining more of the currency at short notice using the other currency. Therefore, there are up to 6 possibilities to be considered, but some may be ruled out because of low currency stocks or because goods or substitutes are not currently offered by Merchants. All the prices considered allow correctly for the transaction fees involved, as do calculations of the cost of exchanges of currency at short notice (see 16.8   Transaction Fees for details).

The cases to consider are:

  Use Fiat Use alt.
Good with fiat price \(G_{ff}\) \(G_{fa}\)
Good with alt. price \(G_{af}\) \(G_{aa}\)
Substitute with alt. price \(S_{af}\) \(S_{aa}\)

Some comparisons are simple but others are not. In the formulae, the symbol \(\succ\) means ‘is preferred to’.

  • The Customer makes no purchase if no Merchant/Control Catalogue offers the good or its substitute, or if the Customer has insufficient currency (of any kind) left. This still counts as a purchase for the purposes of making the intended number of purchases that day.
  • If the Customer has enough currency to purchase the good at an advertised price without obtaining more of the currency at short notice then using the existing stock of currency will be preferred.
\[\begin{split}&G_{ff} \succ G_{fa} \\ &G_{aa} \succ G_{af} \\ &S_{aa} \succ S_{af}\end{split}\]
  • If the good and its substitute are both offered at a price in the same currency then the item with the best value per unit of the currency will be preferred.
\[\begin{split}&m\ \text{fiat-price}[G_{ff}] \geq \text{fiat-price}[S_{ff}] \implies S_{ff} \succ G_{ff} \\ &m\ \text{fiat-price}[G_{ff}] < \text{fiat-price}[S_{ff}] \implies G_{ff} \succ S_{ff} \\ &m\ \text{fiat-price}[G_{fa}] \geq \text{fiat-price}[S_{fa}] \implies S_{fa} \succ G_{fa} \\ &m\ \text{fiat-price}[G_{fa}] < \text{fiat-price}[S_{fa}] \implies G_{fa} \succ S_{fa} \\ &m\ \text{fiat-price}[G_{aa}] \geq \text{fiat-price}[S_{aa}] \implies S_{aa} \succ G_{aa} \\ &m\ \text{fiat-price}[G_{aa}] < \text{fiat-price}[S_{aa}] \implies G_{aa} \succ S_{aa} \\ &m\ \text{fiat-price}[G_{af}] \geq \text{fiat-price}[S_{af}] \implies S_{af} \succ G_{af} \\ &m\ \text{fiat-price}[G_{af}] < \text{fiat-price}[S_{af}] \implies G_{af} \succ S_{af}\end{split}\]
  • The Customer will be indifferent between a good priced in fiat currency but paid for by obtaining alternative currency at short notice and a good priced in alternative currency and paid for by obtaining fiat currency at short notice. In the rare event of a choice being needed, it will be random with equal probabilities. The reason this is likely to be rare is that the Customer has a good stock of both currencies and will be able to buy using the advertised currency more efficiently.
\[\begin{split}&G_{fa} \nsucc G_{af} \\ &G_{af} \nsucc G_{fa}\end{split}\]

More complicated comparisons are between goods priced in fiat currency and goods priced in alternative currency. For these it is necessary to calculate the cost of the purchase in the relevant currency, taking all transaction fees into account, and bearing in mind which party pays each fee.

  • In clear cut cases one price will be so much better that even obtaining its currency at short notice (a costly approach) would still be better than using that currency on the other price. The Customer will prefer that price. That is:
\[\begin{split}\text{fiat-cost}[G_{af}] < \text{fiat-cost}[G_{ff}] &\implies G_{af} \succ G_{ff} \\ \text{alt-cost}[G_{fa}] < \text{alt-cost}[G_{aa}] &\implies G_{fa} \succ G_{aa}\end{split}\]
  • Where a good is priced in one currency and its substitute is priced in the other, a similar logic applies but now comparing the value per unit currency to see if the situation is clear cut.
\[\begin{split}m\ \text{fiat-cost}[G_{ff}] > \text{fiat-cost}[S_{af}] &\implies S_{af} \succ G_{ff} \\ m\ \text{alt-cost}[G_{aa}] > \text{alt-cost}[S_{fa}] &\implies S_{fa} \succ G_{aa}\end{split}\]
  • If a clear cut difference between a fiat currency price and an alternative currency price does not exist then the Customer will choose at random between the prices with equal probability.

16.10   Currency Holdings Management

16.10.1   Holdings Of Currency

Users, Market Maker Exchanges, and the Controller each have holdings of fiat currency and alternative currency. In the case of the Controller and Market Maker Exchanges, these holdings represent their entire wealth. However, for Users these are just the part of their wealth considered relevant to the alternative currency. In particular, when a User is a Speculator the combination of these holdings is the total wealth considered currently available for speculating on currencies and is allocated between the fiat currency and alternative currency. Users may top up their fiat currency holdings from their other wealth, or take money from their fiat currency holding. (The amount of other wealth is not represented in the simulator.)

Market Makers and the Controller must try to avoid running out of money. Market Makers need to set their prices to avoid this and you, as the brains behind the Controller, have many ways to avoid it. In the extreme, Market Makers and the Controller will be prevented from accepting transactions that require more money than they have, or would leave them with no money at all.

Users are also prevented from completing transactions that would cause them to overspend a currency, but they can adjust their holdings as a trial unfolds. They are given Initial Holdings and subsequently reconsider them from time to time. In an effort to complete transactions they may also try to swap value between the fiat currency and the alternative currency, but this does not change the combined value of the holdings significantly.

16.10.2   Initial Holdings

All Users have an Initial Holding, valued in fiat currency. This is randomly generated when the User agent is first created according to the parameter settings: Lowest Initial Holding, Mean Initial Holding, and Median Initial Holding. This Initial Holding is remembered and remains an enduring indication of the overall wealth of the User.

However, this Initial Holding is modified as follows:

  • Initial Users: These are Users with holdings of alternative currency from the start of the Trial. Their Initial Holding is split between fiat currency and alternative currency according to the parameter settings: Mean Fraction Held As Alternative Currency, Variance Of Fraction Held As Alternative Currency, and Initial Alternative Currency Value. The fraction held as alternative currency is chosen randomly and the currency conversion uses the Initial Alternative Currency Value.
  • Token Holding Users: These are Users who bought tokens exchangeable for alternative currency at an exchange rate of 1. Their Initial Holding is split between fiat currency and tokens according to the parameter settings: Mean Fraction Held As Tokens, Variance Of Fraction Held As Tokens, and Initial Token Price.The fraction held as tokens is chosen randomly and the valuation of those tokens is given by the Initial Token Price.
  • Individual Potential Users Opting In: These users begin with their Initial Holding in fiat currency, but may be given Gift Coins if those are being provided. The parameter Gift Coins gives the number of alternative currency coins given to each new User in this situation.

This Initial Holding is related to the level of purchasing of goods, should the User become a Customer, and to the number of goods offered for sale, should be User become a Merchant.

16.10.3   Reconsidering Holdings

The User reconsiders the amounts of currency to hold from time to time. The delay until next reconsidering the holding amounts is found by calculating the delay that would be chosen for each of the User’s roles (one or more from: Speculator, Customer, Merchant, Operator) individually, then choosing the shortest delay.

How much to hold in each currency is determined by predicting currency needs until the next reconsideration (excluding Speculation) and considering the Initial Holding (which is used as an indicator of the User’s overall wealth, including wealth not included in the currency holdings).

\[A_N = \text{max}(D (A_{cb} - A_{ms} - A_{of}), 0)\]
where:
\(A_N\) is the estimated amount of alternative currency needed to cover the Customer, Merchant, and Operator roles.
\(D\) is the number of days until the next reconsideration of holdings.
\(A_{cb}\) is the predicted amount of alternative currency needed by a Customer to buy goods per day, or is zero if the User is not a Customer. This comes from the decision factor Customer Purchases In Alternative Currency (Value) and see 16.7.3   Transaction Values.
\(A_{ms}\) is the predicted amount of alternative currency received by a Merchant from selling goods per day, or is zero if the User is not a Merchant. This comes from the decision factor Merchant Sales In Alternative Currency (Value) and see 16.7.3   Transaction Values.
\(A_{of}\) is the predicted amount of alternative currency received by an Operator for supporting transactions per day, or is zero if the User is not an Operator. This comes from the decision factor Operator Transaction Fees (Value) and see 16.7.3   Transaction Values.
\[F_N = \text{max}(D (F_{cb} - F_{ms} + F_{mr} + F_{oc}), 0)\]
where:
\(F_N\) is the estimated amount of fiat currency needed to cover the Customer, Merchant, and Operator roles.
\(D\) is the number of days until the next reconsideration of holdings.
\(F_{cb}\) is the amount of fiat currency paid by a Customer to buy goods, or zero if the User is not a Customer. This comes from the decision factor Customer Purchases In Fiat Currency (Value) and see 16.7.3   Transaction Values.
\(F_{ms}\) is the amount of fiat currency received by a Merchant for selling goods, or zero if the User is not a Merchant. This comes from the decision factor Merchant Sales In Fiat Currency (Value) and see 16.7.3   Transaction Values.
\(F_{mr}\) is the amount of fiat currency used by a Merchant to replenish stocks of goods, or zero if the User is not a Merchant. This comes from the decision factor Merchant Resupply Purchases (Value) and see 16.7.3   Transaction Values.
\(F_{oc}\) is the amount of fiat currency paid by an Operator to cover expenses, or zero if the User is not a Merchant. This comes from the decision factor Operator Expenses (Value) and see 16.7.3   Transaction Values.

If the User is not a Speculator, then the target holdings will be these estimated requirements plus 50%:

\[\begin{split}&A_H = 1.5 A_N \\ &F_H = 1.5 F_N\end{split}\]

However, if the User is a Speculator then the situation is more complicated. The Speculator’s probability of the alternative currency rising in value relative to the fiat currency, \(p\), is crucial. If the amount the User would invest as a Speculator (the average of the current and initial wealth allocated) is less than the amount forecast to be required (plus 50%) then it is the requirement that prevails. Otherwise, it is the Speculation amount that is used.

\[\begin{split}&A_H = \text{max}\bigg(1.5 A_N, {p(I + C_A r + C_F) \over 2 r}\bigg) \\ &F_H = \text{max}\bigg(1.5 F_N, {(1 - p)(I + C_A r + C_F) \over 2} \bigg)\end{split}\]
where:
\(I\) is the Initial Holding of fiat currency allocated to the User.
\(C_A\) is the current holding of alternative currency.
\(C_F\) is the current holding of fiat currency.
\(r\) is the current valuation of the alternative currency.

Averaging the current and initial wealth means that the holding tend to return towards the initial wealth, but gaining and losing money through transactions and speculation can make the wealth rise and fall, temporarily.

As a result of these reconsiderations the holding of alternative currency needs to be adjusted. This can be done in a variety of ways, buying and selling the alternative currency with Exchanges and the Controller.

Also, the holding of fiat currency is adjusted. This is done by drawing on or returning money to the User’s other wealth. These transfers are recorded (see 13   Examining Results).

16.10.4   Transactions

Cash is used by Customers to buy goods and is received from them by Merchants. Merchants also use cash to resupply their stocks. Operators must pay their costs, but receive transaction fees.

The calculations to update stocks of fiat currency and alternative currency for transactions involving Exchanges and Users are tabulated in 16.7.4   Transaction Gains. The calculations for transactions involving the Controller are in the following table. Note that when the Controller sells a good from the Control Catalogue is immediately replenishes its stock.

  \(A'\) \(F'\)
Gift Freshly Minted \(A\) \(F\)
Sell Freshly Minted \(A\) \(F + f - t_f\)
Buy Back And Melt \(A\) \(F - f - t_f\)
Sell From Holding \(A - a - t_a\) \(F + f - t_f\)
Buy Back And Hold \(A + a - t_a\) \(F - f - t_f\)
Operator Payment
In Freshly Minted, Fixed
\(A\) \(F\)
Operator Payment
In Freshly Minted, %
\(A\) \(F\)
Sell from Control Catalogue \(A + a\) \(F - p m_c - t_f\)
where:
\(A\) and \(A'\) are the Controller’s stock of alternative currency before and after the transaction.
\(F\) and \(F'\) are the Controller’s stock of fiat currency before and after the transaction.
\(a\) is the amount of alternative currency initially supplied for the transaction.
\(f\) is the amount of fiat currency initially supplied for the transaction.
\(t_f\) is the transaction fee for a fiat currency transaction.
\(t_a\) is the transaction fee for an alternative currency transaction.
\(p\) is the underlying price of the good.
\(m_c\) is the cost multiple, representing the cost of goods for the Controller as a multiple of the underlying price.

16.11   Adjusting Alternative Currency Holdings

Users and Market Makers need to adjust the amount of alternative currency they hold from time to time. The way they do this must reflect the economics of their decision but also imperfections in their reasoning. The approach depends on whether the agent is buying or selling alternative currency and whether that is for immediate settlement or whether the possibility of delay is tolerable.

16.11.1   Delay allowed

16.11.1.1   Buying Alternative Currency

If the agent is an Active User then it will not attempt adjustment unless the size of the adjustment is at least 10 times any fixed transaction fees that would be payable.

To buy alternative currency, identify all the sources of prices available from all the following, if they exist:

  • Continuous Order Driven Exchanges: For each of these Exchanges, the price to use is the lowest selling price for the alternative currency on any current order. It does not matter if the quantity the order is offering to sell is different from the quantity the agent wishes to buy.
  • Market Makers: The Ask price i.e. price at which each Market Maker is currently willing to sell alternative currency. Obviously if a Market Maker is looking for an exchange it does not consider the price it is offering itself.
  • The Controller’s price to Sell Freshly Minted
  • The Controller’s price to Sell From Holding

If none of these exist then the agent can do nothing.

The agent then selects a number of sources to consider at random, with uniform probability over the range from 1 to the number of sources. This means that at least one source is bound to be chosen but some could be left out. The agent then selects that number of sources from those available, at random with equal probability for each source.

From these selected sources, the agent then identifies the set of sources offering the lowest cost and chooses one from them at random. (The cost reflects the price and also any applicable transaction fees.)

Having chosen a source to buy from, the agent makes the purchase. If the source is the Controller or a Market Maker then the agent simply makes the purchase at the advertised price immediately. (The agent’s deliberation time is very short so the seller does not revise prices during it.) There is a small possibility of the purchase failing or not providing the full quantity of alternative currency and if this happens no additional action is taken.

If using a Continuous Order Driven Exchange then the agent will cancel any previously placed orders that have not been fulfilled (on all Exchanges) and replace them with one or two new orders on the selected Exchange, with the following parameters.

Order 1:

  • Time duration: 3 days.
  • Quantity: Half the quantity of alternative currency to be bought to achieve the intended holding.
  • Price: The price to match the best order on the Exchange. This may result in failing to buy the full quantity, in which case the remaining quantity will stay on the Exchange and may be matched with later orders from other Users.

Order 2:

  • Time duration: 3 days.
  • Quantity: Half the quantity of alternative currency to be bought to achieve the intended holding.
  • Price: The price to match the best order on the Exchange less between 0 and 2% of that price (the exact percentage reduction being selected at random with uniform probability distribution). This order may result in a cheaper purchase for the agent if new orders come into the Exchange within the next three days.

16.11.1.2   Selling Alternative Currency

If the agent is an Active User then it will not attempt adjustment unless the size of the adjustment is at least 10 times any fixed transaction fees that would be payable.

To sell alternative currency, identify all the sources of prices available from all the following, if they exist:

  • Continuous Order Driven Exchanges: For each of these Exchanges, the price to use is the highest buying price for the alternative currency on any current order. It does not matter if the quantity the order is offering to buy is different from the quantity the agent wishes to sell.
  • Market Makers: The Bid price i.e. price the Market Maker is willing to pay to buy alternative currency. Obviously if a Market Maker is looking for an exchange it does not consider the price it is offering itself.
  • The Controller’s price to Buy Back And Melt
  • The Controller’s price to Buy Back And Hold

If none of these exist then the agent can do nothing.

The agent then selects a number of sources to consider at random, with uniform probability over the range from 1 to the number of sources. This means that at least one source is bound to be chosen but some could be left out. The agent then selects that number of sources from those available, at random with equal probability for each source.

From these selected sources, the agent the finds the set of sources offering the highest quantity of fiat currrency for the alternative currency (considering any applicable transaction fees) then chooses one randomly from this set with equal probability.

Having chosen a source to sell to, the agent makes the sale. If the source is the Controller or a Market Maker then the agent simply makes the sale at the advertised price immediately. (The agent’s deliberation time is very short so the buyer does not revise prices during it.) There is a small possibility of the sale failing or not disposing of the full quantity of alternative currency and if this happens no additional action is taken.

If using a Continuous Order Driven Exchange then the agent will cancel any previously placed orders that have not been fulfilled (on all Exchanges) and replace them with one or two new orders on the selected Exchange, with the following parameters.

Order 1:

  • Time duration: 3 days.
  • Quantity: Half the quantity of alternative currency to be sold to achieve the intended holding.
  • Price: The price to match the best order on the Exchange. This may result in failing to sell the full quantity, in which case the remaining quantity will stay on the Exchange and may be matched with later orders from other Users.

Order 2:

  • Time duration: 3 days.
  • Quantity: Half the quantity of alternative currency to be sold to achieve the intended holding.
  • Price: The price to match the best order on the Exchange plus between 0 and 2% of that, with the exact percentage being selected randomly with a uniform distribution. This order may result in a higher priced sale for the agent if new orders come into the Exchange within the next three days.

16.11.2   Immediate Result Needed

16.11.2.1   Buying Alternative Currency

To buy alternative currency, identify all the sources of prices available from all the following, if they exist:

  • Continuous Order Driven Exchanges: For each of these Exchanges, the price to use is the lowest selling price for the alternative currency that will match with enough orders to completely satisfy the required purchase quantity.
  • Market Makers: The Ask price i.e. price at which each Market Maker is currently willing to sell alternative currency. Obviously if a Market Maker is looking for an Exchange it does not consider the price it is offering itself.
  • The Controller’s price to Sell Freshly Minted
  • The Controller’s price to Sell From Holding

If none of these exist then the agent can do nothing.

The agent then selects a number of sources to consider at random, with uniform probability over the range from 1 to the number of sources. This means that at least one source is bound to be chosen but some could be left out. The agent then selects that number of sources from those available, at random with equal probability for each source.

From these selected sources, the agent identifies those offering the lowest cost and selects one of these at random. (The cost reflects the price and also any applicable transaction fees.)

Having chosen a source to buy from, the agent makes the purchase. If the source is the Controller or a Market Maker then the agent simply makes the purchase at the advertised price immediately. (The agent’s deliberation time is very short so the seller does not revise prices during it.) There is a small possibility of the purchase failing or not providing the full quantity of alternative currency and if this happens no additional action is taken.

If using a Continuous Order Driven Exchange then the agent will cancel any previously placed orders that have not been fulfilled (on all Exchanges) and replace them with a new order on the selected Exchange, with the following parameters.

  • Time duration: 1 day.
  • Quantity: The quantity of alternative currency to be bought to achieve the intended holding.
  • Price: The price to match with enough orders to buy the full quantity required.

16.11.2.2   Selling Alternative Currency

To sell alternative currency, identify all the sources of prices available from all the following, if they exist:

  • Continuous Order Driven Exchanges: For each of these Exchanges, the price to use is the price that will sell the full quantity of alternative currency to current orders on the Exchange, potentially matching with more than one order.
  • Market Makers: The Bid price i.e. price at which each Market Maker is currently willing to buy alternative currency. Obviously if a Market Maker is looking for an exchange it does not consider the price it is offering itself.
  • The Controller’s price to Buy Back And Melt
  • The Controller’s price to Buy Back And Hold

If none of these exist then the agent can do nothing.

The agent then selects a number of sources to consider at random, with uniform probability over the range from 1 to the number of sources. This means that at least one source is bound to be chosen but some could be left out. The agent then selects that number of sources from those available, at random with equal probability for each source.

From these selected sources, the agent then identifies the set of sources offering the highest prices (considering any applicable transaction fees), and selects one source from that set at random.

Having chosen a source to sell to, the agent makes the sale. If the source is the Controller or a Market Maker then the agent simply makes the sale at the advertised price immediately. (The agent’s deliberation time is very short so the buyer does not revise prices during it.) There is a small possibility of the sale failing or not disposing of the full quantity of alternative currency and if this happens no additional action is taken.

If using a Continuous Order Driven Exchange then the agent will cancel any previously placed orders that have not been fulfilled (on all Exchanges) and replace them with a new order on the selected Exchange, with the following parameters.

  • Time duration: 3 days.
  • Quantity: The quantity of alternative currency to be sold to achieve the intended holding.
  • Price: The price to match with enough orders to sell the full quantity required.